home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #11 / Amiga Plus CD - 2002 - No. 11.iso / Tools / Development / TinyGL / ami / content / ad709 / tinygl / examples / c / benchmark1.c < prev    next >
Encoding:
C/C++ Source or Header  |  2002-08-15  |  1.8 KB  |  86 lines

  1. /*************************************
  2. *  Drawing a triangle
  3. *
  4. ************/
  5.  
  6. #include <stdio.h>
  7. #include <stdlib.h>
  8. #include <ad709/tinygl/glut.h>
  9.  
  10.  
  11. int glutWindow;
  12. int numTris = 0;
  13. int elapsedTime = -1;
  14.  
  15.  
  16. void init(void)     {
  17.     glEnable(GL_DEPTH_TEST);
  18.     glShadeModel(GL_SMOOTH);
  19.     glClearColor(0.0, 0.0, 0.0, 0.0) ;
  20. }
  21.  
  22.  
  23. void reshape(int width, int height) {
  24.     glViewport(0, 0, (GLint) width, (GLint) height);
  25.     glMatrixMode(GL_PROJECTION);
  26.     glLoadIdentity();
  27.     glFrustum(-2.0, 2.0, -2.0, 2.0, 6.0, 20.0);
  28.     glMatrixMode(GL_MODELVIEW);
  29.     glLoadIdentity();
  30.     glTranslatef(0.0, 0.0, -8.0);
  31. }
  32.  
  33.  
  34. void display(void)    {
  35.     int i;
  36.     glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
  37.     elapsedTime = glutGet(GLUT_ELAPSED_TIME);
  38.     for (i=0; i<300000; i++) {
  39.         glPushMatrix();
  40.         glTranslatef(-1.0, 0.0, 0.0);
  41.         glRotatef(0, 0.0, 0.0, 1.0);
  42.         glBegin(GL_TRIANGLES);
  43.             glColor3f(1.0f, 0.0f, 0.0f);
  44.             glVertex2f(0, -0.5);
  45.             glColor3f(0.0f, 1.0f, 0.0f);
  46.             glVertex2f(1.0, 1.0);
  47.             glColor3f(0.0f, 0.0f, 1.0f);
  48.             glVertex2f(-1.0, 1.0);
  49.         glEnd();
  50.         glPopMatrix();
  51.         numTris++;
  52.     }
  53.     glutDestroyWindow(glutWindow);
  54.     printf("%d\n", glutGet(GLUT_ELAPSED_TIME)-elapsedTime);
  55.     exit(0);
  56. }
  57.  
  58.  
  59. void idle() {
  60.     if (elapsedTime == -1)    {
  61.         elapsedTime = glutGet(GLUT_ELAPSED_TIME);
  62.     }
  63.     else if (glutGet(GLUT_ELAPSED_TIME) >= elapsedTime + 1000) {
  64.         glutDestroyWindow(glutWindow);
  65.         printf ("\n\n Triangles drawn : %d\n", numTris);
  66.         exit(0);
  67.     }
  68.     glutPostRedisplay();
  69. }
  70.  
  71.  
  72. int main(int argc, char** argv)    {
  73.     glutInit(&argc, argv);
  74.     glutInitWindowSize(320, 240);
  75.     glutInitWindowPosition(0, 0);
  76.     glutWindow = glutCreateWindow("TinyGL speed test");
  77.     init();
  78.     glutDisplayFunc(display);
  79.     glutReshapeFunc(reshape);
  80.     glutIdleFunc(idle);
  81.  
  82.     glutMainLoop();
  83.  
  84.     return 0 ;
  85. }
  86.